import { TypingContentTypeEnum, TypingModeEnum } from '@renderer/enums/TypingEnum'
import { useTypingStore } from '@renderer/store/modules/typing.store'

export default () => {
  const customTimeDuration = ref<number | ''>('')
  const typingStore = useTypingStore()

  // 设置内容类型
  function setContentType(type: TypingContentTypeEnum) {
    typingStore.setContentType(type)
    typingStore.resetTyping()
  }

  // 设置语言
  function setLanguage(lang: TypingModeEnum) {
    typingStore.setMode(lang)
    typingStore.resetTyping()
  }

  // 设置测试时长
  function setTestDuration(time: number) {
    typingStore.setDuration(time)
    typingStore.resetTyping()
  }

  // 应用自定义时间
  function applyCustomTimeDuration() {
    if (customTimeDuration.value && typeof customTimeDuration.value === 'number') {
      const duration = Math.min(Math.max(5, customTimeDuration.value), 300)
      typingStore.setCustomDuration(duration)
      if (typingStore.isStart) {
        typingStore.resetTyping()
      }
    }
  }

  // // 创建实时计时器
  // const startTimerInterval = () => {
  //   if (timerInterval) return

  //   timerInterval = window.setInterval(() => {
  //     if (!typingStore.isTimerRunning || typingStore.isPaused) return

  //     // 获取当前时间
  //     const currentTime = Date.now()

  //     // 如果开始时间未设置，不进行计时
  //     if (typingStore.startTime === 0) return

  //     // 计算已经过去的时间（秒）
  //     const elapsed = Math.floor((currentTime - typingStore.startTime) / 1000)
  //     typingStore.elapsedTime = elapsed

  //     // 获取总时间
  //     const totalTime =
  //       typingStore.duration === 'custom'
  //         ? typingStore.customDuration
  //         : Number(typingStore.duration)

  //     // 计算剩余时间
  //     const remainingTime = Math.max(0, totalTime - elapsed)

  //     // 如果时间到了，完成测试
  //     if (remainingTime <= 0 && !typingStore.isCompleted) {
  //       typingStore.completed()
  //       stopTimerInterval()
  //     }
  //   }, 500) // 更改为500毫秒更新一次，提高精度
  // }

  // // 停止计时器
  // const stopTimerInterval = () => {
  //   if (timerInterval) {
  //     clearInterval(timerInterval)
  //     timerInterval = null
  //   }
  // }

  // // 监听打字状态变化，管理计时器
  // watch(
  //   () => typingStore.isTimerRunning,
  //   (isRunning) => {
  //     if (isRunning) {
  //       startTimerInterval()
  //     } else {
  //       stopTimerInterval()
  //     }
  //   }
  // )

  // // 初始化计时状态
  // const initTimingSystem = () => {
  //   // 确保计时器状态正确
  //   if (typingStore.isTimerRunning && !timerInterval) {
  //     startTimerInterval()
  //   }
  // }

  // // 在组件挂载前初始化
  // onBeforeMount(() => {
  //   initTimingSystem()
  // })

  // // 在组件挂载后再次确认
  // onMounted(() => {
  //   initTimingSystem()
  // })

  // // 在组件卸载时清理计时器
  // onUnmounted(() => {
  //   stopTimerInterval()
  // })

  return {
    customTimeDuration,
    setLanguage,
    setTestDuration,
    setContentType,
    applyCustomTimeDuration
  }
}
